#pragma once
#include "VolumeRenderPCH.h"
#include "Cube.h"
#include "VolumeObj.h"
#include "TFObj.h"

class CDVRPass : public IRenderPass
{
public:
	CDVRPass(const std::string& vPassName, int vExecutionOrder) : IRenderPass(vPassName, vExecutionOrder) {}
	~CDVRPass() = default;

	void initV() override;
	void updateV() override;

private:
	std::shared_ptr<CCube> m_pCube = nullptr;
	std::shared_ptr<CVolumeObj> m_pVolumeObj = nullptr;
	std::shared_ptr<CTFObj> m_pTFObj = nullptr;

	GLuint m_FBO;
	std::shared_ptr<hiveGraphics::STexture> m_pRayCastTex = nullptr;
	std::shared_ptr<hiveGraphics::STexture> __createRayCastTex2D();
};